package com.war.service.outofstorage;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.war.dao.outOfStorage.ProductOutDao;
import com.war.pojo.outofstorage.ProductOut;
import com.war.pojo.system.Customer;
import com.war.pojo.system.Warehouse;
import com.war.pojo.warehousing.PurchaseInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
public class ProductOutServiceImpl implements ProductOutService {
    //创建一个ProductOutDao的实现类对象
    @Autowired(required = false)//括号里的内容可加可不加
    ProductOutDao productOutDao;


    @Override
    public HashMap<String, Object> select(ProductOut po) {
        HashMap<String, Object> map =  new HashMap<String, Object>();
        //1 设置分页参数
        PageHelper.startPage(po.getPage(),po.getRow());
        //2 查询数据库表数据
        List<ProductOut> list = new ArrayList<>();
        if(po.getConValue().equals("")&&!po.getCondition().equals("出库日期范围")){
            list=productOutDao.select();
        }else {
            if(po.getCondition().equals("产品名称")){
                list=productOutDao.selectByProductName(po);
            }else if(po.getCondition().equals("客户")){
                list=productOutDao.selectByClientName(po);
            }else if(po.getCondition().equals("出库日期范围")){
                list=productOutDao.selectByDate(po);
            }else if(po.getCondition().equals("仓库名称")){
                list=productOutDao.selectByWarehouseName(po);
            }else if(po.getCondition().equals("仓库管理员")){
                list=productOutDao.selectByAdministrator(po);
            }else{
                list=productOutDao.select();
            }
        }



        //3.把查询的数据转换成分页对象
        PageInfo<ProductOut> page = new PageInfo<ProductOut>(list);

        //获取分页的当前页的集合
        map.put("list",page.getList());
        //总条数
        map.put("total",page.getTotal());
        //总页数
        map.put("totalPage",page.getPages());
        //上一页
        if(page.getPrePage()==0){
            map.put("pre",1);
        }else{
            map.put("pre",page.getPrePage());
        }

        //下一页
        //保持在最后一页
        if(page.getNextPage()==0){
            map.put("next",page.getPages());
        }else{
            map.put("next",page.getNextPage());
        }
        //当前页
        map.put("cur",page.getPageNum());

        return map;
    }

    @Override
    public String add(ProductOut po) {
        int num=productOutDao.add(po);
        if(num>0){
            return "录入成功";
        }
        return "录入失败";
    }
    //根据id查询
    @Override
    public ProductOut selectByOutId(ProductOut po) {
        return  productOutDao.selectByOutId(po);
    }

    @Override
    public int storageNumNow(ProductOut po) {
        return productOutDao.storageNumNow(po);
    }
    //获取客户姓名
    @Override
    public List<Customer> selectClientName() {
        return productOutDao.selectClientName();
    }
    //获取客户电话
    @Override
    public String getClientTel(Customer customer) {
        return productOutDao.getClientTel(customer);
    }

    //获取仓库名称
    @Override
    public List<Warehouse> selectWarehouseName() {
        return productOutDao.selectWarehouseName();
    }
    //获取仓库管理员
    @Override
    public String getAdministrator(Warehouse warehouse) {
        return productOutDao.getAdministrator(warehouse);
    }
    //删除信息
    @Override
    public String delInfo(ProductOut po) {
        int num=productOutDao.delInfo(po);
        if(num>0){
            return "删除成功";
        }
        return "删除失败";
    }

    @Override
    public String edit(ProductOut po) {
        int num=productOutDao.edit(po);
        if(num>0){
            return "修改成功";
        }
        return "修改失败";
    }

    @Override
    public String delAll(List<ProductOut> po) {
        int num = 0;
        for(ProductOut p:po) {
            num = productOutDao.delAll(p);
            num++;
        }
            if (num ==po.size()) {
                return "删除成功";
            }
        return "删除失败";
    }

    @Override
    public String productReturn() {
        int num=productOutDao.productReturn();
        if(num>0){
            return "退货成功";
        }
        return "退货失败";
    }


}
